#!/usr/bin/env python3 
# -*- coding:utf-8 -*-
from collections import Iterable

# for循环不仅可以用在list或tuple上，还可以作用在其他可迭代对象上
d = {'a': 1, 'b': 2, 'c': 3}
for key in d:
    print(d.get(key))

# 字符串也能迭代,输出结果
# A
# B
# C
for ch in 'ABC':
    print(ch)

# 如何判断一个对象是可迭代对象呢？方法是通过collections模块的Iterable类型判断：

canIterate = isinstance("abc", Iterable)  # str是否可迭代
print(canIterate)  # True

canIterate = isinstance([1, 2, 3], Iterable)  # list是否可迭代
print(canIterate)  # True

canIterate = isinstance(123, Iterable)  # 整数是否可迭代
print(canIterate)  # False

# enumerate函数可以把一个list变成索引-元素对，这样就可以在for循环中同时迭代索引和元素本身

for i, value in enumerate(d):
    print(i, value)

for x, y in [(1, 1), (2, 4), (3, 9)]:
    print(x, y)

"""
任何可迭代对象都可以作用于for循环，包括我们自定义的数据类型，只要符合迭代条件，就可以使用for循环。
"""
# for循环其实可以同时使用两个甚至多个变量，比如dict的items()可以同时迭代key和value
d = {'x': 'A', 'y': 'B', 'z': 'C'}
for k, v in d.items():
    print(k, v)
